//
//  main.c
//  位运算
//
//  Created by szcq on 2021/4/16.
//

#include <stdio.h>

int main(int argc, const char * argv[]) {
    // insert code here...
    printf("Hello, World!\n");
    
    
    int result1 = 9 & 5;
    /**
     9 :  1001
   &  5 :  0101
    -----------
        0001
     */
    printf("result1 = %d\n",result1);//1
    int result2 = 9 | 5;
    /**
     9 :  1001
   |    5 :  0101
    -----------
        1101
     */
    printf("result2 = %d\n",result2);//13
    
    int result3 = 9 ^ 5;
    /**
     9 :  1001
   ^  5 :  0101
    -----------
        1100
     */
    printf("result3 = %d\n",result3);//12
    printf("result3 = %d\n",9 ^ 8 ^ 5);//4
    printf("result3 = %d\n",9 ^ 0);//4
    printf("result = %d\n",9 ^ 5 ^ 5);//9

    int result4 = ~9;
    /**
            0000 0000 0000 0000 0000 0000 0000 1001
     ~  ==>     1111 1111 1111 1111 1111 1111 1111 0110     //取反之后  是补码    反码 = 补码-1
       -          0000 0000 0000 0000 0000 0000 0000 0001
            1111 1111 1111 1111 1111 1111 1111 0101    // 这步是反码
            1000 0000 0000 0000 0000 0000 0000 1010   // 这步是原码   转成二进制  -10
     */
    printf("result4 = %d\n",result4); // -10
    return 0;
}
